package cn.javase.base.reflect;

import java.lang.reflect.Constructor;

public class _02_获取构造方法的四种方式 {
    public static void main(String[] args) throws NoSuchMethodException {
        Class<Student> studentClass = Student.class;
        // 方式一
        Constructor<?>[] constructors = studentClass.getConstructors();
        for (Constructor<?> constructor : constructors) {
            System.out.println(constructor); // 仅输出public修饰的构造方法
        }
        System.out.println("==================================================================");
        // 方式二
        Constructor<?>[] declaredConstructors = studentClass.getDeclaredConstructors();
        for (Constructor<?> constructor : declaredConstructors) {
            System.out.println(constructor);
        }
        System.out.println("==================================================================");
        // 方式三
        Constructor<Student> constructor = studentClass.getConstructor(String.class, int.class);
        System.out.println(constructor); // 仅能获取public修饰的构造方法，如果不是，则会报错
        System.out.println("==================================================================");
        // 方式四
        Constructor<Student> declaredConstructor = studentClass.getDeclaredConstructor(int.class);
        System.out.println(declaredConstructor);
    }
}
